package com.logic.landseaserver.service;


import java.io.IOException;
import java.util.Date;
import java.util.List;

import com.logic.common.exception.BusinessException;
import com.logic.common.service.ICRUDService;
import com.logic.common.util.QueryUtil;
import com.logic.landseaserver.common.exception.LandseaBusinessException;
import com.logic.landseaserver.common.exception.LandseaException;
import com.logic.landseaserver.domain.Bill;
import com.logic.landseaserver.domain.Contract;
import com.logic.landseaserver.ws.dto.ContractDTO;
import com.logic.landseaserver.ws.dto.ContractPdfDTO;
import com.logic.landseaserver.ws.dto.UserFileDTO;
import com.logic.landseaserver.ws.request.ContractNeedDelReq;


public interface IContractService extends ICRUDService {
    List<ContractDTO> queryContractList(QueryUtil queryUtil) throws BusinessException;

    Bill updateAfterPay(Integer contractId, Integer billId, Date payTime) throws Exception;

    ContractPdfDTO getContractPdfDTO(Integer id) throws BusinessException;

    Integer productContractPdf(int id,String oprType) throws Exception;

    void createPdf(Integer contractId) throws Exception;

    List getMyContracts(QueryUtil queryUtil) throws LandseaBusinessException;

    ContractDTO getMyContractsById(Integer id) throws BusinessException;

    void deleteNoPayContracts(List<ContractNeedDelReq> list);

    List<ContractNeedDelReq> needDeletedContract(Integer minuteMis);

    void deleteContractList(Integer minuteMis);

    void deleteById(Integer id) throws BusinessException,LandseaException;

    void testCreatePDFImg() throws IOException, BusinessException;

    void updateVersion(Integer contractId) throws Exception;

    List<UserFileDTO> queryHistoryVersions(Integer contractId)throws BusinessException;

    Integer getChangeVersionCount(Integer projectId);

    void renameContractPdf(Contract contract)throws BusinessException;

    void deleteBalanceByContract(List<ContractNeedDelReq> contractList);

    void updateContractEnd(String inDate);

    Integer getChangeRentCount(Integer projectId);
}
